﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms; using Montana.Entidades;
using System.Text.RegularExpressions;

namespace Montana
{
    public partial class TextCustom : TextBox
    {
        public TextCustom()
        {
            InitializeComponent();

            this.BackColor = ControlesCustomConfig.GetColorFondo();
            this.ForeColor = ControlesCustomConfig.GetColorLetra();
        }

        bool manejarFoco = true;
        public bool ManejarFoco
        {
            get { return manejarFoco; }
            set { manejarFoco = value; }
        }

        bool permitirSoloValoresNumericos = false;
        public bool PermitirSoloValoresNumericos
        {
            get {return permitirSoloValoresNumericos;}
            set { permitirSoloValoresNumericos = value; }
        }

        bool anularCambioColorEnFoco = false;
        public bool AnularCambioColorEnFoco
        {
            get { return anularCambioColorEnFoco; }
            set { anularCambioColorEnFoco = value; }
        }

        private void TextCustom_Enter(object sender, EventArgs e)
        {
            if (!AnularCambioColorEnFoco)
            {
                this.BackColor = ControlesCustomConfig.GetColorSelFondo();
                this.ForeColor = ControlesCustomConfig.GetColorSelLetra();

                this.SelectAll();
            }
        }

        private void TextCustom_Leave(object sender, EventArgs e)
        {
            if (!AnularCambioColorEnFoco)
            {
                this.BackColor = ControlesCustomConfig.GetColorFondo();
                this.ForeColor = ControlesCustomConfig.GetColorLetra();
            }
        }

        private void TextCustom_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)13 && ManejarFoco)
            {
                SendKeys.Send("{tab}");
                e.Handled = true;
            }

            //int i = (int)e.KeyChar;
            //MessageBox.Show(i.ToString());

            //valida que se haya ingresado un numero o 1 punto o 1 coma
            if (PermitirSoloValoresNumericos)
            {
                //si es un punto o una coma...
                if (e.KeyChar == '.' || e.KeyChar == ',')
                {
                    //... chequea que no se haya ingresado ya una coma o un punto
                    if (this.Text.IndexOf('.') != -1 || this.Text.IndexOf(',') != -1)
                        e.Handled = true;
                }
                else if (e.KeyChar == Convert.ToChar(8))
                {
                    return;
                }
                else if (e.KeyChar == Convert.ToChar(45) && this.Text.IndexOf('-') == -1)
                {
                    return;
                }
                else if (!Regex.IsMatch(e.KeyChar.ToString(), "\\d+"))
                {
                    //si no es un numero                    
                    e.Handled = true;
                }
            }
        }
        
    }
}
